package com.ktjy.action.printer;

import java.util.Random;

/**
 * 打印机程序。
 * 面向接口编程，而不是具体的实现类
 */
public class Printer {

    private Ink ink = null;
    private Paper paper = null;

    public Printer(Ink ink) {
        this.ink = ink;
    }

    /**
     * 设值注入所需的setter方法。
     *
     * @param ink 墨盒
     */
    public void setInk(Ink ink) {
        this.ink = ink;
    }

    public Printer() {
    }

    /**
     * 设值注入所需的setter方法。
     *
     * @param paper 纸张
     */

    public void setPaper(Paper paper) {
        this.paper = paper;
    }

    /**
     * 打印方法
     *
     * @param message 要打印内容
     */
    public void print(String message) {
        Random random = new Random();
        int r = random.nextInt(10);
        if (r < 5) {
            // 输出颜色标记
            System.out.println("使用" + ink.getColor(255, 200, 0) + "颜色打印:\n");
            // 逐字符输出到纸张
            for (int i = 0; i < message.length(); ++i) {
                paper.putInChar(message.charAt(i));
            }
            // 将纸张的内容输出
            System.out.println(paper.getContent());
        } else if (r <= 7) {
            throw new RuntimeException("出现卡纸异常");
        } else {
            throw new RuntimeException("墨盒没有墨水了");
        }


    }
}
